#include <stdio.h>
#include <stdlib.h>


typedef struct linktest
{
	int data;
	struct linktest *next;
}Linknode;

int insert(Linknode *H)
{
	H->data++;
	Linknode *p=malloc(sizeof(Linknode));
	scanf("%d",&(p->data));
	p->next=H->next;
	H->next=p;

	return 0;
}
int addnode(Linknode *P,Linknode *node)
{
	while(P->next!=NULL)
	{
		P=P->next;
	}
	node->next=NULL;
	P->next=node;

	return 0;
}

int linkaddlink(Linknode *P,Linknode *H,Linknode *Q)
{
	Linknode *p=P;
	Linknode *h=H->next;
	Linknode *q=Q->next;
	Linknode *wh=NULL;
	Linknode *wq=NULL;
	while(h!=NULL&&q!=NULL)
	{
		if((h->data)>=(q->data))
		{
			wh=h;
			h=h->next;
			addnode(P,wh);

		}
		else
		{
			wq=q;
			q=q->next;
			addnode(P,wq);
		}
	}

	if(h==NULL)
	{
		while(p->next!=NULL)
		{
			p=p->next;
		}
		p->next=q;

	}
	else if(q==NULL)
	{
		while(p->next!=NULL)
		{
			p=p->next;
		}
		p->next=h;
	}

	return 0;

}
int view(Linknode *H)
{
	while(H->next!=NULL)
	{
		H=H->next;
		printf("%d ",H->data);
	}
	puts(" ");

	return 0;
}
int main(int argc, const char *argv[])
{
	Linknode *H=malloc(sizeof(Linknode));
	H->data=0;
	H->next=NULL;

	Linknode *Q=malloc(sizeof(Linknode));
	Q->data=0;
	Q->next=NULL;

	Linknode *P=malloc(sizeof(Linknode));
	P->data=0;
	P->next=NULL;
	printf("link 1\n");
	insert(H);
	insert(H);
	insert(H);
	insert(H);
	view(H);
	printf("link 2\n");
	insert(Q);
	insert(Q);
	insert(Q);
	insert(Q);
	view(Q);
	linkaddlink(P,H,Q);

	view(P);

	return 0;
}
